A Simple API for check Spam and Malicious mails
- Presentazione Api
- Collegarsi a HastEmail
- Architettura e scelte di progetto
- Servizi esterni utlizzati
- About hastemail
- Licenza
- Patch Note
HasteEmail è un Servizio Web che consente di filtrare le email segnalate come spam o che sono state riconosciute come ingannevoli. Il suo obiettivo è quello di proteggere i vari siti web che la implementano, al fine di validare una corretta registrazione di un utente, e negare l'accesso a bot o malintenzionati. HastEmail ha quindi diverse funzionalità:
- Si può inviare una richiesta
GET
al server contenente una mail, questa verrà cercata nel database locale- Si può inviare una richiesta
GET
generica al server, lo stesso risponderà con la lista di tutte le mail presenti in blacklist- Si può inviare una richiesta
DELETE
al server contenente una mail, questa verrà eliminata dal database locale*- Si può inviare una richiesta
PATCH
al server contenente una mail, questa verrà aggiunta al database locale*
* = Queste richieste necessitano di autenticazione. L'api protegge i verbi PATCH
e DELETE
con la Basic Authentication
Per collegarsi ad HastEmail è necessario eseguire delle semplici richieste in http, impostando il verbo giusto. Di eseguito la documentazione per inoltrare correttamente la richiesta:
/status
: metodo GET, verifica che il server funzioni correttamente. In caso di riscontro positivo ritorna status 200 (OK)/list
: metodo GET, ritorna un file Json contenente tutte le mail presenti nel database locale/check/:id
: metodo GET, verifica che un'email sia presente o meno nella blacklist. Ritorna un oggetto Json di tipo {block: t/f}/add/id
: metodo PATCH, consente di inserire una mail nella blacklist. Ritorna un oggetto json del tipo {added: t/f}/delete/id
: metodo DELETE, consente di eliminare una mail dalla blacklist. Ritorna un oggetto json del tipo {deleted: t/f}
L'architettura è stata scelta basandosi sul modello API-RESTful, ed è implementata come segue:
- Server scritto in NodeJS + Express
- Protezione di alcune delle funzioni dell'API in Basic Authentication (con password in sha256 + salt)
- Database scritto in JSON (nome: pvt.json)
- Implementazione della piattaforma su Heroku
Si è scelto di non fornire alcun metodo di registrazione. Gli account amministratori, dovranno essere creati dal webadmin
Per promuovere l'app, si è scelto di utilizzare il servizio Heroku, che oltre a garantire un canale HTTPS, fornisce un sistema di Automatic deploys sulla risorsa GitHub per il continuous integration degli update. Non è obbligatorio utilizzare la risorsa heroku, difatti l'api è stata progettata per funzionare anche in locale, bypassando le limitazioni in CORS e garantendo uno sviluppo fluido anche in localhost. Infine la stessa API si appoggia ad alcune librerie di terze parti per eseguire alcune funzioni. Di seguito le librerie utilizzate:
Library | Description |
---|---|
express |
NodeJS Framework |
cors |
System used for bypass CORS limitation |
bodyParser |
middleware for parsing the response |
sha256 |
Hasing lib used for hash password in basic auth |
fs |
Lib used for get local file (blacklist) |
About | Description |
---|---|
Developer |
Jacopo M. Mengarelli (Zenek @Hastro) |
Matricola |
292728 |
LOCATION |
Italy |
API |
NodeJS + Javascirpt + Express |
Per la scelta della licensa si è scelto di utilizzare il servizio "https://choosealicense.com/", che sulla base delle informazioni fornite, e cioè sulla necessità di mentenere il codice più aperto e utilizzabile possibile, ha suggerito l'implementazione della licenza GNU V3
- New repository for Hastemail
- Code and dependecies cleared
- Hastemail now check private database in JSON
- New readme, new start, new stuff 😊
- Added function for check the entire blacklist
- Added function for check if a single email is present into black list
- Added function for append new emails to blacklist
- Added function for delete emails from blacklist 😊
- Now the "add" function doesn't allow you to enter the same email twice (if already present)
- Delete function doesn't delete the first email anymore, but check the entire array if an email is insert twice
- Check function fixed, now correctly send the response
- Fixed all HTTP status code
- Code clear
- Deleted unnecessary file
- Deleted HTML folder
- Fixed status code
- Comments cleared
- Code clear
- Client Released
- Api is now hosted on Heroku!
- License GNU V3
- CVE-2020-8147 Vulnerability Mitigated
- Minor BugFix and comments/log fixed